package com.xwaf.platform.system.api.util;

import com.alipay.api.AlipayClient;
import com.alipay.api.DefaultAlipayClient;
import com.alipay.demo.trade.config.Configs;
import com.alipay.demo.trade.service.AlipayTradeService;
import com.alipay.demo.trade.service.impl.AlipayTradeServiceImpl;

public final class AliPayConfig {

	/**
	 * 私有的默认构造子，保证外界无法直接实例化
	 */
	private AliPayConfig() {
	};

	/**
	 * 签名方式
	 */
	public static String SIGN_TYPE = "RSA2";
	/**
	 * 参数类型
	 */
	public static String PARAM_TYPE = "json";
	/**
	 * 编码
	 */
	public static String CHARSET = "utf-8";

	/**
	 * 
	 * <p>
	 * 类级的内部类，也就是静态的成员式内部类<br>
	 * 该内部类的实例与外部类的实例 没有绑定关系<br>
	 * 而且只有被调用到才会装载，从而实现了延迟加载
	 * <p>
	 * 
	 * @author 李聪 <br>
	 * @email xwaf_love@yeah.net <br>
	 * @since JDK 1.8<br>
	 * @date 2019年12月30日 上午8:59:26 <br>
	 * @see 无<br>
	 *      Copyright (c) 2019, xwaf_love@yeah.net All Rights Reserved.<br>
	 */
	private static class SingletonHolder {
		/**
		 * 静态初始化器，由JVM来保证线程安全
		 */
		private static AlipayClient alipayClient = new DefaultAlipayClient(Configs.getOpenApiDomain(),
				Configs.getAppid(), Configs.getPrivateKey(), PARAM_TYPE, CHARSET, Configs.getAlipayPublicKey(),
				SIGN_TYPE);

		private static AlipayTradeService tradeService = new AlipayTradeServiceImpl.ClientBuilder().build();
	}

	/**
	 * 
	 * <p>
	 * 支付宝APP请求客户端实例
	 * <p>
	 * 
	 * @author 李聪 <br>
	 * @email xwaf_love@yeah.net <br>
	 * @since JDK 1.8<br>
	 * @date 2019年12月30日 上午8:59:59 <br>
	 * @see 无<br>
	 * @return
	 * @demo <br>
	 */
	public static AlipayClient getAlipayClient() {
		return SingletonHolder.alipayClient;
	}

	/**
	 * 
	 * <p>
	 * 电脑端预下单
	 * <p>
	 * 
	 * @author 李聪 <br>
	 * @email xwaf_love@yeah.net <br>
	 * @since JDK 1.8<br>
	 * @date 2019年12月30日 上午8:59:52 <br>
	 * @see 无<br>
	 * @return
	 * @demo <br>
	 */
	public static AlipayTradeService getAlipayTradeService() {
		return SingletonHolder.tradeService;
	}
}
